package com.bandd.gulimall.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 1、)如何使用Nacos作为配置中心统一管理项目
 *      1、)引入依赖
 *      2、)创建bootstrap.properties文件
 *          spring.application.name=gulimall-coupon  // 指定所在模块
 *          spring.cloud.nacos.config.server-addr=127.0.0.1:8848 // Nacos端口
 *      3、)需要给配置中心添加一个数据集 Data ID:
 *          gulimall-coupon.properties  应用名.properties
 *      4、)给应用名.properties添加任意配置
 *      5、)动态获取配置
 *          @RefreshScope :动态获取并刷新配置
 *          @Values("${配置项的名}") 获取到配置
 *          如果配置中心和当前应用的配置文件都配置了相同的项，优先使用配置中心的配置
 * 2、)细节
 *      1、)命名空间
 *       默认public（保留空间）；默认新增所有配置都在命名空间下配置
 *         1、开发、测试、生产；利用命名空间进行环境隔离。
 *         注意在：bootstrap.properties 配置上，需要使用哪个命名空间的配置
 *          spring.cloud.nacos.config.namespace=a5fd1f9f-fa13-4845-b63a-84f403cf985a
 *         2、每个微服务之间相互隔离，每一个微服务都创建自己的命名空间，只加载自己命名空间下的所有配置
 *      2、)数据集：所有配置的集合
 *      3、)配置集ID：类似文件名
 *          Data ID :文件名
 *      4、)配置分组
 *          默认所有配置集都属于：DEFAULT_GROUP
 *
 *      每个微服务创建自己的命名空间，使用配置分组区分环境：dev、test、prpo
 * 3、)同时加载多个配置集
 *      1、)微服务任何配置信息，任何配置文件都可以放在配置中心上。
 *      2、)只需要在bootstrap.properties说明加载配置中的那些配置即可
 *      3、)@Value @ConfigurationProperties....
 *      以前springboot任何方法从配置文件中获取值，都能用
 *      配置中心有的优先实用配置中心的。
 *
 *
 */

@SpringBootApplication
@EnableDiscoveryClient // 开启服务注册功能
public class GulimallCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallCouponApplication.class, args);

    }
}
